home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: delta / whiteline CD Series - delta.iso / progtool / modula2 / module / bestellu.mod < prev    next >
Text File  |  1995-11-25  |  9KB  |  261 lines

  1. IMPLEMENTATION MODULE  Bestellungen;
  2.  
  3.  
  4.  
  5. FROM BlRscInc IMPORT
  6.       BESTLDIA ,      (* TREE *) BB1, BB2, BB3, BB4, BB5,
  7.       BB6, BB7, LB1, LB2, LB3, LB4, LB5,
  8.       LB6 , LB7, BK1 , BK2, BK3, BK4, BK5,
  9.       BK6, BK7, LK1, LK2, LK3, LK4, LK5,
  10.       LK6 , LK7 , CNCLBEST, OKBESTLG ,BSDTITEL,SCHULDEN,      (* OBJECTs in TREE #5 *)
  11.       EKB1, EKB2, EKB3, EKB4, EKB5, EKB6, EKB7, EKL1 ,
  12.       EKL2, EKL3, EKL4, EKL5, EKL6, EKL7 ;      (* OBJECTs in TREE #3 *)
  13.  
  14.  
  15. FROM EasyDialog IMPORT DoDialog,GetText,SetText,SetObjectFlags;
  16.  
  17. FROM ConvertStr IMPORT StrToInt,IntToStr,LongIntToStr;
  18. FROM Strings IMPORT IsEmptyStr,EqualStr,LeftStr,SubStr,ClearStr,Length,
  19.                     Concat;
  20. FROM InOut IMPORT WriteString,WriteLn,WriteInt,Done,ReadInt,
  21.                   OpenOutput,CloseOutput;
  22.  
  23. FROM LongInOut IMPORT WriteLongInt;
  24. FROM SYSTEM IMPORT ADDRESS, VAL ;
  25. FROM AES IMPORT FormAlert,ResourceGetAddr;
  26.  
  27.  
  28. FROM PreisErfassung IMPORT EinKaufsPreis, EKPreis,GTString;
  29.  
  30. VAR BestllDiaAddr   : ADDRESS;
  31.     IdxTable        : ARRAY[EKB1..EKL7] OF RECORD
  32.                                             TextIdx,
  33.                                             MengenIdx :INTEGER;
  34.                                          END(*RECORD*);
  35.     SchuldenBeimFax : LONGINT;
  36.     k               : INTEGER [EKB1..EKL7];
  37.  
  38. TYPE Art =(Bestelldialog,Abrechnungsdialog);
  39. (*************************************************************************)
  40. PROCEDURE ComputeBestellung;
  41. BEGIN
  42.     SchuldenBeimFax:=SchuldenBeimFax+
  43.     VAL(LONGINT,(EinKaufsPreis[k].Preis * (EinKaufsPreis[k].NeuBezogeneKaesten+EinKaufsPreis[k].ZuBezahlendeKaesten)));
  44. END  ComputeBestellung;
  45. PROCEDURE SchuldenAnFax():LONGINT;
  46. BEGIN
  47.     SchuldenBeimFax:=0D;
  48.     FOR k:=EKB1 TO EKL7 DO
  49.           ComputeBestellung;
  50.     END(*FOR*);
  51.     RETURN SchuldenBeimFax;
  52. END  SchuldenAnFax;
  53.  
  54. PROCEDURE DruckOK():BOOLEAN;
  55. VAR s: ARRAY [0..127] OF CHAR;
  56.     formret : INTEGER;
  57. BEGIN
  58.    s :='[2][Druck in Ordnung?|Ja = Druck OK|Nein = Druck wiederholen][  Ja  | Nein ]';
  59.    formret:=FormAlert(1,s);
  60.    RETURN formret=1
  61. END DruckOK;
  62.  
  63.  
  64. (*************************************************************************)
  65. PROCEDURE B2str(VAR MengenStr: ARRAY OF CHAR);
  66. VAR  HilfsStr: ARRAY [0..2] OF CHAR;
  67.     OK       : BOOLEAN;
  68.  
  69. BEGIN
  70.      IntToStr(EinKaufsPreis[k].NeuBezogeneKaesten,3,HilfsStr,OK);
  71.      MengenStr[0]:=HilfsStr[1]; MengenStr[1]:=HilfsStr[2];
  72. END B2str;
  73.  
  74. PROCEDURE A2str(VAR MengenStr : ARRAY OF CHAR);
  75. VAR  HilfsStr: ARRAY [0..2] OF CHAR;
  76.     OK       : BOOLEAN;
  77.  
  78. BEGIN
  79.      IntToStr(EinKaufsPreis[k].NeuBezogeneKaesten+EinKaufsPreis[k].ZuBezahlendeKaesten,3,HilfsStr,OK);
  80.      MengenStr[0]:=HilfsStr[1]; MengenStr[1]:=HilfsStr[2];
  81.      ComputeBestellung;
  82. END  A2str;
  83.  
  84.  
  85. PROCEDURE ZeichneDialog(welchen:Art);
  86. VAR     MengenStr: ARRAY [0..2] OF CHAR;
  87.     OK       : BOOLEAN;
  88.     WertZuStr: PROCEDURE (VAR ARRAY OF CHAR);
  89.     i        : INTEGER;
  90.     SchuldenStr1:ARRAY [0..6] OF CHAR;
  91.     SchuldenStr2:ARRAY [0..7] OF CHAR;
  92.     TitelStr: ARRAY [0..21] OF CHAR;
  93.  
  94. BEGIN
  95.   IF welchen=Bestelldialog THEN
  96.      TitelStr:='Vom Fax geliefert :';
  97.      SetText(BSDTITEL,BestllDiaAddr,TitelStr);
  98.      SetObjectFlags(SCHULDEN,BestllDiaAddr,80H);
  99.      WertZuStr:=B2str
  100.   ELSE
  101.      TitelStr:='Abbrechnung mit Fax :';
  102.      SetText(BSDTITEL,BestllDiaAddr,TitelStr);
  103.      SetObjectFlags(SCHULDEN,BestllDiaAddr,08H);
  104.      WertZuStr:=A2str
  105.   END(*IF*);
  106.   FOR k:=EKB1 TO EKL7 DO
  107.      IF EinKaufsPreis[k].Preis#0 THEN
  108.        SetText(IdxTable[k].TextIdx ,BestllDiaAddr,EinKaufsPreis[k].Getraenk);
  109.        WertZuStr(MengenStr);
  110.        SetText(IdxTable[k].MengenIdx ,BestllDiaAddr,MengenStr);
  111.        SetObjectFlags(IdxTable[k].MengenIdx ,BestllDiaAddr,8);
  112.      ELSIF EinKaufsPreis[k].TreeIndex#0 THEN
  113.        SetObjectFlags(IdxTable[k].MengenIdx ,BestllDiaAddr,0);
  114.      END(*IF*);
  115.   END(*FOR*);
  116.   IF welchen=Abrechnungsdialog THEN
  117.          LongIntToStr(SchuldenBeimFax,7,SchuldenStr2,OK);
  118.          (*SchuldenBeimFax:=0D;*)
  119.          FOR i:=0 TO 6 DO
  120.              SchuldenStr1[i]:= SchuldenStr2[i+1]
  121.          END(*FOR*);
  122.          SetText(SCHULDEN,BestllDiaAddr,SchuldenStr1);
  123.   END(*IF*);
  124. END  ZeichneDialog;
  125.  
  126.  
  127.  
  128. PROCEDURE Abrechnung;
  129. VAR DiaReturn : INTEGER;
  130.            OK : BOOLEAN;
  131.     Bezahlt   : INTEGER;
  132.     MengenStr : ARRAY[0..1] OF CHAR;
  133.  (***************)
  134.  GezahltAnFax : LONGINT;
  135.                 (************)
  136. PROCEDURE WriteAbbr;
  137. BEGIN
  138.       WriteInt(Bezahlt,4); WriteString(' * ');
  139.       WriteString(EinKaufsPreis[k].Getraenk);
  140.       WriteInt((Bezahlt*EinKaufsPreis[k].Preis) DIV 100,5);WriteString('.');
  141.       WriteInt((Bezahlt*EinKaufsPreis[k].Preis) MOD 100,2);WriteString(' DM');WriteLn;
  142.  
  143. END  WriteAbbr;
  144.  
  145.  
  146.  
  147. BEGIN
  148.   SchuldenBeimFax:=0D;
  149.   MengenStr:='00';
  150.   ResourceGetAddr(0,BESTLDIA,BestllDiaAddr);
  151.   ZeichneDialog(Abrechnungsdialog);
  152.   DiaReturn:=DoDialog(BestllDiaAddr,BK1);
  153.   GekaufteBierFlaschen:=0; GekaufteLimoFlaschen:=0;
  154.   AusgabenFuerBierKauf:=0D; AusgabenFuerLimoKauf:=0D;
  155.   GezahltAnFax :=0D;
  156.   IF DiaReturn=OKBESTLG THEN
  157.     REPEAT
  158.       OpenOutput('PRN:');
  159.  
  160.       WriteLn;
  161.       FOR k:=EKB1 TO EKB7 DO
  162.         IF EinKaufsPreis[k].Preis#0 THEN
  163.            GetText(IdxTable[EinKaufsPreis[k].TreeIndex].MengenIdx ,BestllDiaAddr,MengenStr);
  164.            StrToInt(MengenStr,Bezahlt,OK);
  165.            GezahltAnFax:=GezahltAnFax+VAL(LONGINT, Bezahlt*EinKaufsPreis[k].Preis);
  166.            AusgabenFuerBierKauf:= AusgabenFuerBierKauf+VAL(LONGINT, Bezahlt*EinKaufsPreis[k].Preis);
  167.            GekaufteBierFlaschen:=GekaufteBierFlaschen+(Bezahlt*EinKaufsPreis[k].FlaschenProKasten);
  168.            WriteAbbr;
  169.            EinKaufsPreis[k].ZuBezahlendeKaesten:= EinKaufsPreis[k].ZuBezahlendeKaesten-Bezahlt;
  170.         END(*IF*);
  171.       END(*FOR*);
  172.       FOR k:=EKL1 TO EKL7 DO
  173.         IF EinKaufsPreis[k].Preis#0 THEN
  174.            GetText(IdxTable[EinKaufsPreis[k].TreeIndex].MengenIdx ,BestllDiaAddr,MengenStr);
  175.            StrToInt(MengenStr,Bezahlt,OK);
  176.            GezahltAnFax:=GezahltAnFax+VAL(LONGINT, Bezahlt*EinKaufsPreis[k].Preis);
  177.            AusgabenFuerLimoKauf:=AusgabenFuerLimoKauf+VAL(LONGINT, Bezahlt*EinKaufsPreis[k].Preis);
  178.            GekaufteLimoFlaschen:= GekaufteLimoFlaschen +(Bezahlt*EinKaufsPreis[k].FlaschenProKasten);
  179.            WriteAbbr;
  180.            EinKaufsPreis[k].ZuBezahlendeKaesten:= EinKaufsPreis[k].ZuBezahlendeKaesten-Bezahlt;
  181.         END(*IF*);
  182.       END(*FOR*);
  183.       SchuldenBeimFax:=SchuldenBeimFax-GezahltAnFax;
  184.       WriteString('       Gesammtbetrag: ');
  185.       WriteLongInt(GezahltAnFax DIV 100D,6);WriteString('.');
  186.       WriteLongInt(GezahltAnFax MOD 100D,2);WriteString(' DM ');WriteLn;
  187.       WriteString('    Schulden: ');
  188.       WriteLongInt(SchuldenBeimFax DIV 100D,6);WriteString('.');
  189.       WriteLongInt(SchuldenBeimFax MOD 100D,2);WriteString(' DM ');WriteLn;
  190.       CloseOutput;
  191.     UNTIL DruckOK();
  192.   END(*IF*);
  193. END  Abrechnung;
  194.  
  195.  
  196.  
  197.  
  198. PROCEDURE Bestellung;
  199. VAR DiaReturn : INTEGER;
  200.            OK : BOOLEAN;
  201.     MengenStr : ARRAY[0..1] OF CHAR;
  202.  
  203.  
  204. BEGIN
  205.   MengenStr:='00';
  206.   ResourceGetAddr(0,BESTLDIA,BestllDiaAddr);
  207.   ZeichneDialog(Bestelldialog);
  208.   DiaReturn:=DoDialog(BestllDiaAddr,BK1);
  209.   IF DiaReturn=OKBESTLG THEN
  210.       FOR k:=EKB1 TO EKL7 DO
  211.         IF EinKaufsPreis[k].Preis#0 THEN
  212.            GetText(IdxTable[EinKaufsPreis[k].TreeIndex].MengenIdx ,BestllDiaAddr,MengenStr);
  213.            StrToInt(MengenStr,EinKaufsPreis[k].NeuBezogeneKaesten,OK);
  214.         END(*IF*);
  215.       END(*FOR*);
  216.   END(*IF*);
  217. END Bestellung;
  218.  
  219. BEGIN
  220.     SchuldenBeimFax:=0D;
  221.     AusgabenFuerBierKauf:=0D;
  222.     AusgabenFuerLimoKauf:=0D;
  223.     GekaufteBierFlaschen:=0;
  224.     GekaufteLimoFlaschen:=0;
  225.  
  226.  
  227. (***********************Make Index Table********************)
  228. (* Um vom Index auf die dazugehörigen Editfelder zu kommen *)
  229. (***********************************************************)
  230. IdxTable[EKB1].TextIdx  :=BB1;
  231. IdxTable[EKB1].MengenIdx:=BK1;
  232. IdxTable[EKB2].TextIdx  :=BB2;
  233. IdxTable[EKB2].MengenIdx:=BK2;
  234. IdxTable[EKB3].TextIdx  :=BB3;
  235. IdxTable[EKB3].MengenIdx:=BK3;
  236. IdxTable[EKB4].TextIdx  :=BB4;
  237. IdxTable[EKB4].MengenIdx:=BK4;
  238. IdxTable[EKB5].TextIdx  :=BB5;
  239. IdxTable[EKB5].MengenIdx:=BK5;
  240. IdxTable[EKB6].TextIdx  :=BB6;
  241. IdxTable[EKB6].MengenIdx:=BK6;
  242. IdxTable[EKB7].TextIdx  :=BB7;
  243. IdxTable[EKB7].MengenIdx:=BK7;
  244.  
  245. IdxTable[EKL1].TextIdx  :=LB1;
  246. IdxTable[EKL1].MengenIdx:=LK1;
  247. IdxTable[EKL2].TextIdx  :=LB2;
  248. IdxTable[EKL2].MengenIdx:=LK2;
  249. IdxTable[EKL3].TextIdx  :=LB3;
  250. IdxTable[EKL3].MengenIdx:=LK3;
  251. IdxTable[EKL4].TextIdx  :=LB4;
  252. IdxTable[EKL4].MengenIdx:=LK4;
  253. IdxTable[EKL5].TextIdx  :=LB5;
  254. IdxTable[EKL5].MengenIdx:=LK5;
  255. IdxTable[EKL6].TextIdx  :=LB6;
  256. IdxTable[EKL6].MengenIdx:=LK6;
  257. IdxTable[EKL7].TextIdx  :=LB7;
  258. IdxTable[EKL7].MengenIdx:=LK7;
  259.  
  260. END Bestellungen.
  261.